
<%@page import="tmanager.*" %>
<%@ include file="/WEB-INF/sql.jsp" %>

<% if (session.getAttribute("tmanager.professore") == null) {
        response.sendRedirect("../index.jsp");
        return;
    }
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Pragma", "no-cache");
    response.setDateHeader("Expires", 0);

    boolean emailInviata = false;
    
    //Recupero dalla sessione il professore
    Professore professoreSessione = (Professore) session.getAttribute("tmanager.professore");
    String cognomeProfessore = professoreSessione.getCognome();

    //Recupero i valori degli parametri presenti nella richiesta http
    String matricola = (request.getParameter("matricolaStudente") == null) ? "" : request.getParameter("matricolaStudente").trim();
    String nome = (request.getParameter("nomeStudente") == null) ? "" : request.getParameter("nomeStudente").trim();
    String cognome = (request.getParameter("cognomeStudente") == null) ? "" : request.getParameter("cognomeStudente").trim();
    String mail = (request.getParameter("emailStudente") == null) ? "" : request.getParameter("emailStudente").trim();
    String statoTesi = (request.getParameter("statoTesiStudente") == null) ? "" : request.getParameter("statoTesiStudente").trim();
    String titolo = (request.getParameter("titoloTesiStudente") == null) ? "" : request.getParameter("titoloTesiStudente").trim();
    String corso = (request.getParameter("corsoTesiStudente") == null) ? "" : request.getParameter("corsoTesiStudente").trim();
    String tipoTesi = (request.getParameter("tipologiaTesiStudente") == null) ? "" : request.getParameter("tipologiaTesiStudente").trim();
    String tipoLaurea = (request.getParameter("tipoLaureaStudente") == null) ? "" : request.getParameter("tipoLaureaStudente").trim();

    boolean formValido = false;
    boolean[] erroreRilevato=new boolean[4];
    erroreRilevato[0]=true;
    erroreRilevato[1]=true;
    erroreRilevato[2]=true;
    erroreRilevato[3]=true;
    boolean datiInseriti=false;
    
    int tupleInserite = -1;
    int idStudente = -1;
    boolean matricolaValida = false;
    boolean nomeValido = false;
    boolean cognomeValido = false;
    boolean mailValida = false;

    //Controllo che la matricola, il nome, il cognome e la mail siano validi
    if (!matricola.isEmpty()) {
        datiInseriti=true;
    
        matricolaValida = Utility.isMatricola(matricola);
        if(matricolaValida){
            erroreRilevato[0]=false;
        }
    }
    if (!nome.isEmpty()) {
        datiInseriti=true;
        nomeValido = Utility.isNomeOrCognome(nome);
        if(nomeValido){
            erroreRilevato[1]=false;
        }
    }
    if (!cognome.isEmpty()) {
        datiInseriti=true;
        cognomeValido = Utility.isNomeOrCognome(cognome);
        if(cognomeValido){
            erroreRilevato[2]=false;
        }
    }
    if (!mail.isEmpty()) {
        datiInseriti=true;
        mailValida = Utility.controllaMail(mail);
        if(mailValida){
            erroreRilevato[3]=false;
        }
    }
    formValido = (matricolaValida && nomeValido && cognomeValido && mailValida);
    try {
        idStudente = Integer.parseInt(matricola);
    } catch (NumberFormatException e) {
        formValido = false;
    }

    //Nel caso in cui i dati del form siano validi, inizializzo un oggetto Studente
    // con i dati inseriti e lo memorizzo sul DB
    if (formValido) {
        Studente tempStud = new Studente();
        tempStud.setMatricola(idStudente);
        tempStud.setNome(nome);
        tempStud.setCognome(cognome);
        tempStud.setEmail(mail);
        String passwordGenerata = Utility.passGen();
        tempStud.setPassword(Utility.getMD5(passwordGenerata));
        tempStud.setRelatore(professoreSessione.getIdentificativo());
        tempStud.setStatoProgettoTesi(statoTesi);
        tempStud.setTitoloTesi(titolo);
        tempStud.setCorsoTesi(corso);
        tempStud.setTipologiaTesi(tipoTesi);
        tempStud.setTipoLaurea(tipoLaurea);

        try {
            tupleInserite = insertStudente(tempStud);
        } catch (SQLException e) {
            tupleInserite = -1;
            session.setAttribute("tmanager.erroreTitolo", "Errore durante la creazione Studente");
            session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti, si è verificato un errore durante la creazione di un account Studente dal Professore. Provare ad effettuare l'operazione nuovamente.");
            response.sendRedirect("../errore.jsp");
            return;
        }

        //Nel caso in cui i dati siano stati salvati con successo sul DB,
        //spedisco una mail allo studente con i dati di accesso al sistema
        if (tupleInserite != - 1) {
            EMailManager em = new EMailManager();
            emailInviata = em.inviaEMail(tempStud.getEmail(), "Sistema T-Manager: nuovo profilo creato", "Buongiorno, \n"
                    + "il sistema T-Manager ha un nuovo profilo con i seguenti dati: \n"
                    + "-matricola: s" + tempStud.getMatricola() + "\n"
                    + "-nome: " + tempStud.getNome() + "\n"
                    + "-cognome: " + tempStud.getCognome() + "\n"
                    + "-password: " + passwordGenerata + " (password generata automaticamente)" + "\n"
                    + "\n" + "\n"
                    + "-Profilo creato da: " + cognomeProfessore + "\n"
                    + "Cordiali saluti\n");
            if (!emailInviata) {
                session.setAttribute("tmanager.erroreTitolo", "Errore durante la creazione Studente");
                session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti, si è verificato un errore durante l'invio della mail contenente i dati relativi all'account Studente. Utilizzare la procedura di recupero password.");
                response.sendRedirect("../errore.jsp");
                return;
            }
        }
    }
%>

<%!
    static String sMatricola="La matricola deve essere di tipo numerico.";
    static String sNomeStud="Il nome dello studente &egrave; un campo testuale richiesto.";
    static String sCognStud= "Il cognome dello studente &egrave; un campo testuale richiesto.";
    static String sEmail= "L'email dello studente &egrave; un campo testuale richiesto. Deve essere correttamente formattata.";
    static String sStatoTesi="Lo stato progetto tesi &egrave; un campo testuale che indica lo stato attuale della tesi dello studente. &Egrave; un campo opzionale.";
    static String sTitoloTesi="Titolo Tesi &egrave; un campo testuale in cui deve essere definito il titolo tesi assegnato al tesista. &Egrave; un campo opzionale.";
    static String sCorsoTesi="Corso Tesi &egrave; un campo testuale in cui deve essere definito il corso nel quale il tesista svolge il proprio lavoro di tesi. &Egrave; un campo opzionale.";
%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Creazione Profilo Studente</title>
        <link rel="stylesheet" type="text/css" href="../CSS/defaultStyle.css" />
    </head>
    <body>
        <%@include file="../WEB-INF/jspf/header.jspf" %>
        <script type="text/javascript" src="../Scripts/scripts.js"></script>
        <script type="text/javascript">
          
            function inizializza(){
                $("#riepilogoStatic").remove();
                $("#HcreaStud").addClass("paginaCorrente");
                $("#matricolaStudente").bind("focusout",{p:"matricolaStudente"}, soloNumeri);
                $("#matricolaStudente").bind("focusin",{sugg:"<%=sMatricola%>"}, definisciSugg);
                
                $("#nomeStudente").bind("focusout",{p:"nomeStudente", name: "Nome Studente"}, nonVuoto);
                $("#nomeStudente").bind("focusin",{sugg:"<%=sNomeStud%>"}, definisciSugg);
                
                $("#cognomeStudente").bind("focusout",{p:"cognomeStudente", name: "Cognome Studente"}, nonVuoto);
                $("#cognomeStudente").bind("focusin",{sugg:"<%=sCognStud%>"}, definisciSugg);
                
                $("#emailStudente").bind("focusout",{p:"emailStudente"}, verificaEMail);
                $("#emailStudente").bind("focusin",{sugg:"<%=sEmail%>"}, definisciSugg);
                
                $("#statoTesiStudente").bind("focusout",rimuoviSuggGenerico);
                $("#statoTesiStudente").bind("focusin",{sugg:"<%=sStatoTesi%>"}, definisciSugg);
                
                $("#titoloTesiStudente").bind("focusout",rimuoviSuggGenerico);
                $("#titoloTesiStudente").bind("focusin",{sugg:"<%=sTitoloTesi%>"}, definisciSugg);
                
                $("#corsoTesiStudente").bind("focusout",rimuoviSuggGenerico);
                $("#corsoTesiStudente").bind("focusin",{sugg:"<%=sCorsoTesi%>"}, definisciSugg);
                
                $("#creaStudente").bind("click",{p:"formCreaStudente"}, invia);
                $("#cancella").bind("click",pulisci);
                $("<div class=\"menuRieplogo\"><h3>Suggerimenti:</h3></div>").appendTo("#corpoDx").fadeTo(10, 0.5);
            };
            $(document).ready(inizializza);
        </script>
        <div id="corpo">

            
            <% if (formValido) {%>
            <div id="corpoSx">
            <h2><img id="ok" src="../Immagini/Actions-dialog-ok-apply-icon50px.png"/>Il profilo studente &egrave; stato creato con successo.</h2>
            <a href="../index.jsp"><img src="../Immagini/Home-icon30.png"/>Home Page</a>
            </div>
   
            <% } else {%>
            <div id="corpoDx">
            <div class="menuRieplogo" id="riepilogoStatic">
            <h3>Suggerimenti:</h3>
            <ul>
               <li><%=sMatricola%></li>
               <li><%=sNomeStud%></li>
               <li><%=sCognStud%></li>
               <li><%=sEmail%></li>
               <li><%=sStatoTesi%></li>
               <li><%=sTitoloTesi%></li>
               <li><%=sCorsoTesi%></li>
               
            </ul>
            </div>
            </div>
               <div id="corpoSx">
                   <h2 class="centrato" >Creazione Profilo Studente</h2>
            <form class="modificaProfilo" id="formCreaStudente" method="post" action="creaStudente.jsp">
                <fieldset>
                    <legend>Crea Profilo Studente</legend>
                    <label for="matricolaStudente">Matricola: </label>
                    <input type="text" class="testo" id="matricolaStudente" name="matricolaStudente" value="<%= matricola%>" />
                    <span class="reqField">*</span>
                    <%if(erroreRilevato[0] && datiInseriti){%>
                    <span id="errore_nonNumero" class="err">* il campo Matricola deve essere un numero!</span>
                    <%}%>
                    <br />
                    <label for="nomeStudente">Nome: </label>
                    <input type="text" class="testo" id="nomeStudente" name="nomeStudente" value="<%= nome%>" />
                    <span class="reqField">*</span>
                    <%if(erroreRilevato[1] && datiInseriti){%>
                    <span id="err_nomeStudente" class="err">* il campo Nome Studente è obbligatorio!</span>
                    <%}%>
                    <br />
                    <label for="cognomeStudente">Cognome: </label>
                    <input type="text" class="testo" id="cognomeStudente" name="cognomeStudente" value="<%= cognome%>" />
                    <span class="reqField">*</span>
                    <%if(erroreRilevato[2] && datiInseriti){%>
                    <span id="err_cognomeStudente" class="err">* il campo Cognome Studente è obbligatorio!</span>
                    <%}%>
                    <br />
                    <label for="emailStudente">Email: </label>
                    <input type="text" class="testo" id="emailStudente" name="emailStudente" value="<%= mail%>" />
                    <span class="reqField">*</span>
                    <%if(erroreRilevato[3] && datiInseriti){%>
                    <span id="errore_formatoMail" class="err">* il formato dell'indirizzo non è corretto!</span>
                    <%}%>
                    <br />
                    <label for="relatoreStudente">Relatore: </label>
                    <input type="text" class="testo" id="relatoreStudente" name="relatoreStudente" disabled="disabled" value="<%= professoreSessione.getNomeCognome()%>" /><br />
                    <label for="statoTesiStudente">Stato Progetto Tesi: </label>
                    <input type="text" class="testo" id="statoTesiStudente" name="statoTesiStudente" /><br />
                    <label for="titoloTesiStudente">Titolo Tesi: </label>
                    <input type="text" class="testo" id="titoloTesiStudente" name="titoloTesiStudente" /><br />
                    <label for="corsoTesiStudente">Corso Tesi: </label>
                    <input type="text" class="testo" id="corsoTesiStudente" name="corsoTesiStudente" /><br />
                    <label for="tipologiaTesiStudente">Tipologia Tesi: </label>
                    <select id="tipologiaTesiStudente" class="testo" name="tipologiaTesiStudente" >
                        <option value="<%= Studente.COMPILATIVA%>" selected="selected" ><%= Studente.COMPILATIVA%></option>
                        <option value="<%= Studente.SPERIMENTALE%>" ><%= Studente.SPERIMENTALE%></option>
                    </select><br />
                    <label for="tipoLaureaStudente">Tipo Laurea: </label>
                    <select id="tipoLaureaStudente" class="testo" name="tipoLaureaStudente" >
                        <option value="<%= Studente.TRIENNALE%>" selected="selected" ><%= Studente.TRIENNALE%></option>
                        <option value="<%= Studente.MAGISTRALE%>" ><%= Studente.MAGISTRALE%></option>
                    </select><br />
                    <input type="submit" class="submit" name="creaStudente" id="creaStudente" value="Invia>>" />
                    <input type="reset" value="Cancella" id="cancella" /><br />
                    
                    <span class="reqField">I campi con l'asterisco (*) sono obbligatori.</span>
                    
                </fieldset>
            </form>
               </div>
            <%}%>
        </div>
        <hr />
        <%@include file="../WEB-INF/jspf/footer.jspf" %>
    </body>
</html>
